// 实体类, 表结构 + 模型 权限表
let mongoose = require('mongoose')

// 定义权限表结构
let Schema = mongoose.Schema

let PowerSchema = Schema({
    name: String,   // 权限名
    parentId: {     // 上级权限的_id
        type: String,
        default: 0
    },
    location: String    // 权限的资源地址,用于菜单跳转页面
}, {
    versionKey: false   // 查询数据库时,忽略_v的字段返回
})

// 为模式添加静态方法, 不会与数据库进行交互, 只有在模型实例化编译后产生作用
// 通过模型调用
PowerSchema.statics = {
    // 保存用户名
    save (opts) {
        console.log(this, '+++ß')
        return this.create(opts)
    },
    updateById (id, opts) {
        return this.update({_id: id}, opts).then( (res) => {
            if (res.ok) {
                return Promise.resolve()
            } else {
                return Promise.reject(' 数据库更新角色名失败')
            }
        })
    },
    findOneById (id) {
        return this.findOne({ _id: id})
    },
    findAll () {
        return this.find({})
    },
    removeById (id) {
        return this.remove({_id: id})
    }
}

//编译生成Role模型，并将模型构造函数导出
module.exports = mongoose.model('Power', PowerSchema)
